]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
history: Trim input and ignore if empty
authorLucas Werkmeister <mail@lucaswerkmeister.de>
Mon, 8 Feb 2021 21:20:42 +0000 (22:20 +0100)
committerMarge Bot <marge-bot@gnome.org>
Sat, 13 Feb 2021 08:58:20 +0000 (08:58 +0000)
This ports the runDialog changes of [1] to the underlying history
component, where they can benefit looking glass as well: the history is
now responsible for trimming the input and deciding that it shouldn’t be
stored if empty. (Note that _setPrevItem and _setNextItem already
skipped updating the history if the entry was empty.)

Since both users, runDialog and lookingGlass, also need the trimmed
input for other reasons – runDialog to avoid issues when interpreting
the command as a file path (if it can’t be executed as a command),
lookingGlass to decide whether a command should be run at all – have
addItem return the trimmed input. (runDialog and lookingGlass are not
yet changed to take advantage of this – that will be done in separate
commits.)

[1]: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1442

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1653>

js/misc/history.js

index c7859953d675d5c5e27f6ad1a01f342754c49655..4152588818ae48078e026bef9b9089f90932819b 100644 (file)
@@ -69,21 +69,24 @@ var HistoryManager = class {
     }
 
     addItem(input) {
-        if (this._history.length === 0 ||
-            this._history[this._history.length - 1] !== input) {
+        input = input.trim();
+        if (input &&
+            (this._history.length === 0 ||
+             this._history[this._history.length - 1] !== input)) {
             this._history = this._history.filter(entry => entry !== input);
             this._history.push(input);
             this._save();
         }
         this._historyIndex = this._history.length;
+        return input; // trimmed
     }
 
     _onEntryKeyPress(entry, event) {
         let symbol = event.get_key_symbol();
         if (symbol === Clutter.KEY_Up)
-            return this._setPrevItem(entry.get_text());
+            return this._setPrevItem(entry.get_text().trim());
         else if (symbol === Clutter.KEY_Down)
-            return this._setNextItem(entry.get_text());
+            return this._setNextItem(entry.get_text().trim());
 
         return Clutter.EVENT_PROPAGATE;
     }